package com.ruoyi.quartz.domain;

import java.util.Date;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 定时任务调度日志实体类，对应数据库表 sys_job_log
 * 用于记录定时任务的执行情况，包括任务名称、执行状态、日志信息等
 *
 * @author ruoyi
 */
public class SysJobLog extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 日志序号，唯一标识一条任务执行日志记录
     */
    @Excel(name = "日志序号")
    private Long jobLogId;

    /**
     * 任务名称，标识具体的定时任务
     */
    @Excel(name = "任务名称")
    private String jobName;

    /**
     * 任务组名，用于对任务进行分组管理
     */
    @Excel(name = "任务组名")
    private String jobGroup;

    /**
     * 调用目标字符串，表示任务执行的具体方法或操作
     */
    @Excel(name = "调用目标字符串")
    private String invokeTarget;

    /**
     * 日志信息，记录任务执行过程中的相关信息
     */
    @Excel(name = "日志信息")
    private String jobMessage;

    /**
     * 执行状态，标识任务执行结果
     * 0 表示正常执行
     * 1 表示执行失败
     */
    @Excel(name = "执行状态", readConverterExp = "0=正常,1=失败")
    private String status;

    /**
     * 异常信息，当任务执行失败时记录具体的异常堆栈信息
     */
    @Excel(name = "异常信息")
    private String exceptionInfo;

    /**
     * 任务开始执行时间
     */
    private Date startTime;

    /**
     * 任务结束执行时间
     */
    private Date stopTime;

    /**
     * 获取日志序号
     *
     * @return 日志序号
     */
    public Long getJobLogId() {
        return jobLogId;
    }

    /**
     * 设置日志序号
     *
     * @param jobLogId 日志序号
     */
    public void setJobLogId(Long jobLogId) {
        this.jobLogId = jobLogId;
    }

    /**
     * 获取任务名称
     *
     * @return 任务名称
     */
    public String getJobName() {
        return jobName;
    }

    /**
     * 设置任务名称
     *
     * @param jobName 任务名称
     */
    public void setJobName(String jobName) {
        this.jobName = jobName;
    }

    /**
     * 获取任务组名
     *
     * @return 任务组名
     */
    public String getJobGroup() {
        return jobGroup;
    }

    /**
     * 设置任务组名
     *
     * @param jobGroup 任务组名
     */
    public void setJobGroup(String jobGroup) {
        this.jobGroup = jobGroup;
    }

    /**
     * 获取调用目标字符串
     *
     * @return 调用目标字符串
     */
    public String getInvokeTarget() {
        return invokeTarget;
    }

    /**
     * 设置调用目标字符串
     *
     * @param invokeTarget 调用目标字符串
     */
    public void setInvokeTarget(String invokeTarget) {
        this.invokeTarget = invokeTarget;
    }

    /**
     * 获取日志信息
     *
     * @return 日志信息
     */
    public String getJobMessage() {
        return jobMessage;
    }

    /**
     * 设置日志信息
     *
     * @param jobMessage 日志信息
     */
    public void setJobMessage(String jobMessage) {
        this.jobMessage = jobMessage;
    }

    /**
     * 获取执行状态
     *
     * @return 执行状态（0正常 1失败）
     */
    public String getStatus() {
        return status;
    }

    /**
     * 设置执行状态
     *
     * @param status 执行状态（0正常 1失败）
     */
    public void setStatus(String status) {
        this.status = status;
    }

    /**
     * 获取异常信息
     *
     * @return 异常信息
     */
    public String getExceptionInfo() {
        return exceptionInfo;
    }

    /**
     * 设置异常信息
     *
     * @param exceptionInfo 异常信息
     */
    public void setExceptionInfo(String exceptionInfo) {
        this.exceptionInfo = exceptionInfo;
    }

    /**
     * 获取任务开始执行时间
     *
     * @return 开始时间
     */
    public Date getStartTime() {
        return startTime;
    }

    /**
     * 设置任务开始执行时间
     *
     * @param startTime 开始时间
     */
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    /**
     * 获取任务结束执行时间
     *
     * @return 停止时间
     */
    public Date getStopTime() {
        return stopTime;
    }

    /**
     * 设置任务结束执行时间
     *
     * @param stopTime 停止时间
     */
    public void setStopTime(Date stopTime) {
        this.stopTime = stopTime;
    }

    /**
     * 重写toString方法，用于输出对象的详细信息
     *
     * @return 对象的字符串表示
     */
    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("jobLogId", getJobLogId())
                .append("jobName", getJobName())
                .append("jobGroup", getJobGroup())
                .append("jobMessage", getJobMessage())
                .append("status", getStatus())
                .append("exceptionInfo", getExceptionInfo())
                .append("startTime", getStartTime())
                .append("stopTime", getStopTime())
                .toString();
    }
}
